package com.example.archive.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.example.archive.entity.Archive;
import com.example.archive.entity.ArchiveDocument;
import com.example.archive.util.PageParam;
import com.example.archive.util.Result;

/**
 * Elasticsearch档案搜索服务接口
 * 提供基于Elasticsearch的高级搜索功能
 */
public interface ElasticsearchArchiveService {
    
    /**
     * 同步档案数据到Elasticsearch
     * @param archive 档案实体
     * @return 同步结果
     */
    Result<Boolean> syncArchiveToElasticsearch(Archive archive);
    
    /**
     * 批量同步档案数据到Elasticsearch
     * @return 同步结果
     */
    Result<Boolean> syncAllArchivesToElasticsearch();
    
    /**
     * 从Elasticsearch删除档案文档
     * @param archiveId 档案ID
     * @return 删除结果
     */
    Result<Boolean> deleteArchiveFromElasticsearch(Integer archiveId);
    
    /**
     * 使用Elasticsearch进行全文搜索
     * @param pageParam 分页参数
     * @param userId 用户ID（用于权限控制）
     * @return 搜索结果
     */
    Result<IPage<Archive>> searchArchivesWithElasticsearch(PageParam pageParam, Integer userId);
    
    /**
     * 混合搜索：优先使用Elasticsearch，失败时回退到MySQL
     * @param pageParam 分页参数
     * @param userId 用户ID
     * @return 搜索结果
     */
    Result<IPage<Archive>> hybridSearch(PageParam pageParam, Integer userId);
    
    /**
     * 检查Elasticsearch连接状态
     * @return 连接状态
     */
    boolean isElasticsearchAvailable();
} 